package com.gitee.cnlongs.cnlongmq.basic.entitiy.request;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import com.gitee.cnlongs.cnlongmq.basic.entitiy.response.CnLongMqResponse;
import com.gitee.cnlongs.cnlongmq.basic.enums.CnLongMqStatus;

/**
 * 系统名称：CnLongMqMessage.java
 * 模块名称：
 * 模块描述：中国龙[消息队列] - 具体的消息对象实体类
 * 功能列表：
 * 模块作者：ZOUYONG
 * 开发时间：2019年3月31日 下午12:19:28
 * 模块路径：com.gitee.cnlongs.cnlongmq.basic.entitiy.request.CnLongMqMessage
 * 更新记录：
 */
public class CnLongMqMessage extends CnLongMqBaseInfo {

	// 序列化ID
	private static final long serialVersionUID = 1L;
	
	// 消息ID
	private String longMqId;
	
	// 消息内容ID（多个消息ID对应一个消息内容ID）
	private String longMqMsgId;

	// 消息队列名称Key值
	private String longMqKey;

	// 消息内容，格式：json，请参考CnLongMqFormat类
	private String longMqText;
	
	// 消息角色: 提供方、消费方
	private String longMqRole;
	
	// 消息过期时间，单位为秒
	private int longMqTimeOut;

	// 消息发送服务器名称，全网唯一，不允许重复
	private String sendServerName;

	// 消息发送服务器的IP
	private String sendServerIp;

	// 消息发送服务器的端口
	private Integer sendServerPort;

	// 消息发送时间
	private Date sendDate;

	// 消息是否发送成功
	private Boolean sendStatus;
	
	// 消息处理状态，详细请参考（CnLongMqStatus枚举类）默认为处理中
	private String longMqStatus = CnLongMqStatus.processing.name();

	// 消息消费服务器的名称，全网唯一，不允许重复
	private String customerServerName;

	// 消息消费服务器的ip
	private String customerServerIp;

	// 消息消费服务器的端口
	private Integer customerPort;
	
	// 消费端执行消息处理的类路径
	private String classPath;

	// 消息接收时间
	private Date customerDate;

	// 消息接收是否成功
	private Boolean customerStatus;
	
	// 消息接收失败原因
	private String receiveErrMsg;
	
	// 消息处理失败的错误码
	private String errorCode;
	
	// 消息ACK确认是否成功
	private Boolean ackConfirm;
	
	// 消息消费完成时间
	private Date completeDate;
	
	// 通知发送方时间
	private Date noticeSenderDate;
	
	// 通知发送方状态
	private Boolean noticeSenderStatus;
	
	// 消息处理完后的返回对象
	private CnLongMqResponse returnMessage;
	
	// 消息发送次数
	private int sendTimes;
	
	// 是否重发操作
	private boolean againSend = false;
	
	// 消费发送过的客户端列表
	private Map<String, Boolean> sendCustomerMap = new HashMap<String, Boolean>();

	public String getLongMqId() {
		return longMqId;
	}

	public void setLongMqId(String longMqId) {
		this.longMqId = longMqId;
	}

	public String getLongMqKey() {
		return longMqKey;
	}

	public void setLongMqKey(String longMqKey) {
		this.longMqKey = longMqKey;
	}

	public String getLongMqText() {
		return longMqText;
	}

	public void setLongMqText(String longMqText) {
		this.longMqText = longMqText;
	}

	public int getLongMqTimeOut() {
		return longMqTimeOut;
	}

	public void setLongMqTimeOut(int longMqTimeOut) {
		this.longMqTimeOut = longMqTimeOut;
	}

	public String getSendServerName() {
		return sendServerName;
	}

	public void setSendServerName(String sendServerName) {
		this.sendServerName = sendServerName;
	}

	public String getSendServerIp() {
		return sendServerIp;
	}

	public void setSendServerIp(String sendServerIp) {
		this.sendServerIp = sendServerIp;
	}

	public Integer getSendServerPort() {
		return sendServerPort;
	}

	public void setSendServerPort(Integer sendServerPort) {
		this.sendServerPort = sendServerPort;
	}

	public Date getSendDate() {
		return sendDate;
	}

	public void setSendDate(Date sendDate) {
		this.sendDate = sendDate;
	}

	public Boolean getSendStatus() {
		return sendStatus;
	}

	public void setSendStatus(Boolean sendStatus) {
		this.sendStatus = sendStatus;
	}

	public String getCustomerServerName() {
		return customerServerName;
	}

	public void setCustomerServerName(String customerServerName) {
		this.customerServerName = customerServerName;
	}

	public String getCustomerServerIp() {
		return customerServerIp;
	}

	public void setCustomerServerIp(String customerServerIp) {
		this.customerServerIp = customerServerIp;
	}

	public Integer getCustomerPort() {
		return customerPort;
	}

	public void setCustomerPort(Integer customerPort) {
		this.customerPort = customerPort;
	}

	public Date getCustomerDate() {
		return customerDate;
	}

	public void setCustomerDate(Date customerDate) {
		this.customerDate = customerDate;
	}

	public Boolean getCustomerStatus() {
		return customerStatus;
	}

	public void setCustomerStatus(Boolean customerStatus) {
		this.customerStatus = customerStatus;
	}

	public Boolean getAckConfirm() {
		return ackConfirm;
	}

	public void setAckConfirm(Boolean ackConfirm) {
		this.ackConfirm = ackConfirm;
	}

	public Date getCompleteDate() {
		return completeDate;
	}

	public void setCompleteDate(Date completeDate) {
		this.completeDate = completeDate;
	}

	public String getReceiveErrMsg() {
		return receiveErrMsg;
	}

	public void setReceiveErrMsg(String receiveErrMsg) {
		this.receiveErrMsg = receiveErrMsg;
	}

	public String getClassPath() {
		return classPath;
	}

	public void setClassPath(String classPath) {
		this.classPath = classPath;
	}

	public Map<String, Boolean> getSendCustomerMap() {
		return sendCustomerMap;
	}

	public void setSendCustomerMap(Map<String, Boolean> sendCustomerMap) {
		this.sendCustomerMap = sendCustomerMap;
	}

	public CnLongMqResponse getReturnMessage() {
		return returnMessage;
	}

	public void setReturnMessage(CnLongMqResponse returnMessage) {
		this.returnMessage = returnMessage;
	}

	public String getErrorCode() {
		return errorCode;
	}

	public void setErrorCode(String errorCode) {
		this.errorCode = errorCode;
	}

	public Date getNoticeSenderDate() {
		return noticeSenderDate;
	}

	public void setNoticeSenderDate(Date noticeSenderDate) {
		this.noticeSenderDate = noticeSenderDate;
	}

	public Boolean getNoticeSenderStatus() {
		return noticeSenderStatus;
	}

	public void setNoticeSenderStatus(Boolean noticeSenderStatus) {
		this.noticeSenderStatus = noticeSenderStatus;
	}

	public String getLongMqStatus() {
		return longMqStatus;
	}

	public void setLongMqStatus(String longMqStatus) {
		this.longMqStatus = longMqStatus;
	}

	public String getLongMqRole() {
		return longMqRole;
	}

	public void setLongMqRole(String longMqRole) {
		this.longMqRole = longMqRole;
	}

	public int getSendTimes() {
		return sendTimes;
	}

	public void setSendTimes(int sendTimes) {
		this.sendTimes = sendTimes;
	}

	public boolean isAgainSend() {
		return againSend;
	}

	public void setAgainSend(boolean againSend) {
		this.againSend = againSend;
	}

	public String getLongMqMsgId() {
		return longMqMsgId;
	}

	public void setLongMqMsgId(String longMqMsgId) {
		this.longMqMsgId = longMqMsgId;
	}

}
